嗯,那如何要把游標的位置給打印來?
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
f = open('test', 'r')
print(f.tell())
---------------執行結果---------------
0
Process finished with exit code 0
那在試試把文件讀完後,再打印一次游標位置
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
f = open('test', 'r')
print(f.tell())
print(f.readline())
print(f.tell())
---------------執行結果---------------
0
Python(英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/),是一種物件導向、直譯式的電腦程式語言
129 # 129個字符,記得換行符號要也算進去哦
Process finished with exit code 0
唔…不相信?是129個字符,好吧,那就用另一個方式read()
來呈現好了,預設read()
不指定的話,是讀取所有的,因此我們這次使用read(6)
來試試,看看是不是真的為6
個字符
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
f = open('test', 'r')
print(f.tell())
print(f.read(6))
print(f.tell())
---------------執行結果---------------
0
Python
6
Process finished with exit code 0
嗯嗯,真的是6
個字符,那通常我們還是會用readline()
,因為這樣不用去數這一行有幾個字符,直接幫你讀取整行,那假設我們現在讀取了三行後,要怎麼讓游標回到一開始?
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
f = open('test', 'r')
print(f.tell())
print(f.readline())
print(f.readline())
print(f.readline())
print(f.tell())
f.seek(0)
print(f.readline())
---------------執行結果---------------
0
Python(英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/),是一種物件導向、直譯式的電腦程式語言
它包含了一組功能完備的標準庫,能夠輕鬆完成很多常見的任務。它的語法簡單,與其它大多數程式設計語言使用大括弧不一樣,它使用縮進來定義語句塊
與Scheme、Ruby、Perl、Tcl等動態語言一樣,Python具備垃圾回收功能,能夠自動管理記憶體使用
454
Python(英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/),是一種物件導向、直譯式的電腦程式語言
Process finished with exit code 0
唔…觀察一下,游標真的回到一開始了,原來使用seek(0)
就可以了,通常tell()
會跟seek()
一起使用,tell()
會打印出目前游標的位置,seek()
可以指定游標的位置停在哪裡
那如果要檢查文件是用什麼字符編碼的,要怎麼查呢?
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
f = open('test', 'r')
print(f.readline())
print(f.encoding)
---------------執行結果---------------
Python(英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/),是一種物件導向、直譯式的電腦程式語言
UTF-8
Process finished with exit code 0
唔,看到打印出UTF-8
了,這樣就可以確定了
觀察一下,下面代碼的fileno()
跟name()
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
f = open("test", "wb")
print ("Name of the file: ", f.name)
fid = f.fileno()
print ("File Descriptor: ", fid)
---------------執行結果---------------
Name of the file: foo.txt
File Descriptor: 3
fileno()
這個是作業系統專門的接口,專門去調度系统的 I/O 操作,這個接口是提供給所有程式語言使用,並不是Python才會有的
name()
這個是打印出文件名字,很簡單吧
isatty()
就是判斷是不是一個終端設備,為真返回True
,這個較少用
seekable()
不是所有的文件都可以移動游標,這個主要是拿來判斷普通文件裡的游標能不能移動,為真返回True
readable()
判斷文件是不是可讀的權限,為真返回True
writable()
判斷文件是不是可寫的權限,為真返回True
flush()
即時地把記憶體中的緩衝區裡的資料,立刻寫回至文件中,同時清空緩衝區,一般情況下,文件關閉後會自動刷新緩衝區,但有時你需要在關閉前刷新它,這時就可以使用 flush()
方法
下面我們來做一下實驗
參考資料:
唔…先去吃飯,等等繼續更新,原來這週末也是連假阿…可惜這週末要參加的活動有點多,很怕會斷賽(屎)